home *** CD-ROM | disk | FTP | other *** search
/ Scene Storm / Scene Storm - Volume 1.iso / coding / c / amiexpress / source / doors / aehelp / aehelp.c next >
Encoding:
C/C++ Source or Header  |  1992-12-26  |  21.5 KB  |  481 lines

  1. #include <exec/types.h>
  2. #include <exec/exec.h>
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <string.h>
  6. void end(void);
  7. void LastCommand(void);
  8. #define sm sendmessage
  9.  
  10. main(int argc,char *argv[])
  11. {
  12.    BOOL match;     /* match something? */
  13.    char buff[20];  /* scratch buffer */
  14.    char *example = "-*- EXAMPLE USE -*-";
  15.    char *sysop =   "-*- SYSOP INFO -*-";
  16.    Register(argv[1][0]-'0');
  17.  
  18.    LOOP:
  19.  
  20.    match = FALSE;  /* Reset 'we found a match' flag */
  21.  
  22.    sm("  ",1);
  23.    sm(" ",1);
  24.    sm("** Help v0.4x by -= Nameless =- of Snarfs' Pub BBS (407) 267-8155 **",1);
  25.    sm(" ",1);
  26.  
  27.    sm("Below are the available AmiExpress commands with brief descriptions.",1);
  28.    sm(" ",1);
  29.    sm("?   - Show the current conf menu  B   - Bulletins",1);
  30.    sm("C   - Comment to Sysop            D   - Download file(s)",1);
  31.    sm("E   - Enter mail/message          F   - List files",1);
  32.    sm("G   - Goodbye                     H   - Help with bbs",1);
  33.    sm("J   - Join a conference           M   - ANSI graphics on/off",1);
  34.    sm("N   - New files                   O   - Operator page, chat",1);
  35.    sm("R   - Read mail                   S   - Print your stats",1);
  36.    sm("T   - The current time            U   - Upload a file",1);
  37.    sm("UR  - Upload Resume a file(tm)    V   - View a text file",1);
  38.    sm("W   - Write your stats            X   - Toggle expert mode on/off",1);
  39.    sm("Z   - Zippy file search           OPEN- Open the door menu",1);
  40.    sm("ZOOM- Gathers all messages since last call for free (D)ownload",1);
  41.    sm(" ",1);
  42.  
  43.    prompt("Enter command you want HELP with [press <RETURN> to quit]-> ",buff,4);
  44.  
  45.    if(*buff!=0) sm("  ",1);
  46.    sm(" ",1);
  47.  
  48.    if(!strcmp("?",strupr(buff)))
  49.      {
  50.      sm("-*- (?) Show current menu -*-",1);
  51.      sm(" ",1);
  52.      sm("When you have expert mode selected, you won't see the menu regularly.",1);
  53.      sm("This command is very convenient to bring the menu back up when you",1);
  54.      sm("need quick help while in expert mode.",1);
  55.      sm(" ",1);
  56.      sm("Press X to toggle expert mode on/off (ie.. menu on/off)",1);
  57.      match = TRUE;
  58.      }
  59.  
  60.    if(!strcmp("B",strupr(buff)))
  61.      {
  62.      sm("-*- (B)ulletins -*-",1);
  63.      sm(" ",1);
  64.      sm("When b is pressed you will get a listing of available bulletins.",1);
  65.      sm("from there you can select which bulletin to view. You can also select",1);
  66.      sm("to display a specific bulletin by typing the number after the b.",1);
  67.      sm("After displaying the bulletin you will be returned to the bulletin",1);
  68.      sm("prompt to type in a new bulletin number. NOTE: Each area may have its",1);
  69.      sm("own bulletins.",1);
  70.      sm(" ",1);
  71.      sm(example,1);
  72.      sm(" ",1);
  73.      sm("b   <- by itself displays menu",1);
  74.      sm("b 1 <- with a number will display that bulletin",1);
  75.      sm(" ",1);
  76.      sm(sysop,1);
  77.      sm(" ",1);
  78.      sm("BBS:conf/bulletins/Bullhelp.txt OR Bullhelp.txt.gr has the menu",1);
  79.      sm("BBS:conf/bulletins/Bull1.txt Bull2.txt.gr... are the bulletin files",1);
  80.      sm("There is no limit to the number of bulletins you can have",1);
  81.      match = TRUE;
  82.      }
  83.  
  84.    if(!strcmp("C",strupr(buff)))
  85.      {
  86.      sm("-*- (C)omment to Sysop -*-",1);
  87.      sm(" ",1);
  88.      sm("Comment to Sysop is a private message to the Sysop.  When you press 'c' the",1);
  89.      sm("BBS will fill in 'To:' with the Sysops username, and you will be asked for",1);
  90.      sm("a title for the message.  See the mail section below on how to use the editor.",1);
  91.      sm(" ");
  92.      sm("During posts you can do a TEXT FILE SEND from most term programs, but you",1);
  93.      sm("must remember to remove any blank lines (put at least 1 space on all lines!)",1);
  94.      sm("else the AE editor will think you are finished and prompt for your A)bort",1);
  95.      sm("C)ont D)elete E)dit S)ave ... choice in the middle of the send.",1);
  96.      match = TRUE;
  97.      }
  98.  
  99.    if(!strcmp("D",strupr(buff)))
  100.      {
  101.      sm("-*- (D)ownload file(s) -*-",1);
  102.      sm(" ",1);
  103.      sm("When d is pressed file infomation about the users is printed, and the user",1);
  104.      sm("is ask to enter the protocol (X,Y, or Zmodem) and filenames for downloading.",1);
  105.      sm("At the Filespec(X) prompt enter the file name you are looking for. You can",1);
  106.      sm("use spaces to separate filenames for multiple entries on that line.",1);
  107.      sm("When you enter a filename the BBS searches for the file. If it finds the",1);
  108.      sm("file it will print size of the file and the time it will take to download",1);
  109.      sm("it. If it does not find the file it ask for a replacement file. Once you",1);
  110.      sm("have entered all the files you want to download pressing return by itself",1);
  111.      sm("on the filespec prompt will let you continue.",1);
  112.      sm(" ",1);
  113.      sm("The next prompt you get will ask you to press return to start the transfer,",1);
  114.      sm("A for abort, and G for goodbye after transfer. Abort will exit you back to",1);
  115.      sm("the main menu prompt. Goodbye after transfer will hang up after the",1);
  116.      sm("transfer is done.",1);
  117.      sm(" ",1);
  118.      sm("You can also enter filenames separated by a space right from the main menu.",1);
  119.      sm("For example at the main menu prompt you can type; 'd filename1 filename2'.",1);
  120.      sm(" ",1);
  121.      sm("Wildcard downloading is available. You will be able to enter a filename",1);
  122.      sm("like 'file?' and it will get all files that start with 'file' and have any",1);
  123.      sm("character at the end.  Also you will be able to enter 'f*' to download",1);
  124.      sm("all files that start with 'f' etc....",1);
  125.      match = TRUE;
  126.      }
  127.  
  128.    if(!strcmp("E",strupr(buff)))
  129.      {
  130.      sm("-*- (E)nter message/mail -*-",1);
  131.      sm(" ",1);
  132.      sm("When you press 'e' you well be ask who the message is going to be to.  You",1);
  133.      sm("can enter a users name or press return for the message to be to ALL.  You",1);
  134.      sm("will then be asked the subject of the message. To abort the message press",1);
  135.      sm("return alone on the subject line. Next you will be asked if you want the",1);
  136.      sm("message to be private.  If you just return or enter 'n' the message will be",1);
  137.      sm("public, if you enter 'y' the message will be private. Now you will be in",1);
  138.      sm("the editor. To end the message press return on a line by itself.  You will",1);
  139.      sm("then be at the message prompt which asks you if you what to:",1);
  140.      sm(" ",1);
  141.      sm("   A)bort, C)ont, D)elete, E)dit, F)ree, L)ist, S)ave Option ?",1);
  142.      sm(" ",1);
  143.      sm("Abort- Aborts the message and puts you back to the main menu prompt.",1);
  144.      sm("Continue- Continue puts you back into the editor at the end of the last",1);
  145.      sm("line.",1);
  146.      sm("Delete - asks for a line # to delete.",1);
  147.      sm("Edit   - asks you which line you wish to edit.",1);
  148.      sm("Free   - Lists the bytes remaining for the current message.",1);
  149.      sm("List   - Lists the message.",1);
  150.      sm("Save   - Saves the current message.",1);
  151.      match = TRUE;
  152.      }
  153.  
  154.    if(!strcmp("F",strupr(buff)))
  155.      {
  156.      sm("-*- (F)ile list -*-",1);
  157.      sm(" ",1);
  158.      sm("This will list the files in the current conference.  When you press 'f' you",1);
  159.      sm("will be shown a list of all the directories. If you press 'a' you will be",1);
  160.      sm("shown all the files in the conference, 'u' will show only the upload directory",1);
  161.      sm("(highest number directory).  You can also enter a number from '1' to the",1);
  162.      sm("highest nr directory.  If you have 10 dirs you can enter a number up to 10.",1);
  163.      sm(" ",1);
  164.      sm("From the main menu you can enter 'f u' to list the upload directory, or 'f",1);
  165.      sm("3' to list directory number 3.",1);
  166.      sm(" ",1);
  167.      sm(sysop,1);
  168.      sm(" ",1);
  169.      sm("The file that gets printed out when 'f' is entered is 'filehelp.txt' which is",1);
  170.      sm("in the current 'bbs:Conf'.  DirX is the ascii directory listing file",1);
  171.      match = TRUE;
  172.      }
  173.  
  174.    if(!strcmp("G",strupr(buff)))
  175.      {
  176.      sm("-*- (G)oodbye -*-",1);
  177.      sm(" ",1);
  178.      sm("Goodbye logs the current user out.  If you user has any partial uploads",1);
  179.      sm("they will be first told so and asked if they still want to logout.  If they",1);
  180.      sm("enter 'y' the BBS will log them out, if they press 'n' they will be will be",1);
  181.      sm("asked if they want to view a list of there partial uploads.  If they enter",1);
  182.      sm("'n' they will be put back to the main menu, if they enter 'y' they will be",1);
  183.      sm("shown a list of files that they started to upload.  At each one of the",1);
  184.      sm("files they will be asked if they want to resume the upload.  If you",1);
  185.      sm("entering 'y' the BBS will start receiving the reset of the file.  If you",1);
  186.      sm("entering 'n' the BBS will ask you if you want to delete the aborted file.",1);
  187.      sm(" ",1);
  188.      sm("See resume upload, 'ur', for more infomation.",1);
  189.      match = TRUE;
  190.      }
  191.  
  192.    if(!strcmp("H",strupr(buff)))
  193.      {
  194.      sm("-*- (H)elp with BBS -*-",1);
  195.      sm(" ",1);
  196.      sm("This program (if exists) will either display a (huge) text file,",1);
  197.      sm("or it may be where you are now [if the sysop set up this door",1);
  198.      sm("in place of the standard display file.",1);
  199.      sm(" ",1);
  200.      sm(sysop,1);
  201.      sm(" ",1);
  202.      sm("Normally displays the file BBS:bbshelp.txt or bbshelp.txt.gr,",1);
  203.      sm("or runs this door - if you specified 'H' in the CustomCommands file",1);
  204.      match = TRUE;
  205.      }
  206.  
  207.    if(!strcmp("J",strupr(buff)))
  208.      {
  209.      sm("-*- (J)oin/Jump to conference area -*-",1);
  210.      sm(" ",1);
  211.      sm("When you press 'J' to jump to a conference you will be shown a list of the",1);
  212.      sm("different conferences. You can then enter the number corresponing to the area",1);
  213.      sm("that you want to join.  If you do not have access to the conference you select",1);
  214.      sm("you will be told so by the BBS.  If you press return by itself on the conf",1);
  215.      sm("menu you will be put back to the main menu.  Each conference is totally",1);
  216.      sm("separate from the other conferences.  Each conf. has its own message base and",1);
  217.      sm("file area, and you must have access to be able to join the conference.",1);
  218.      sm(" ",1);
  219.      sm("From the main menu you can enter 'j #' where # is the number of a",1);
  220.      sm("conference that you want to join.  ie.  'j 2' will join conference 2.  When",1);
  221.      sm("you press 'g' for goodbye, whatever conference you are currently in will be",1);
  222.      sm("the conference you will be in the next time you call.",1);
  223.      sm(" ",1);
  224.      sm(sysop,1);
  225.      sm(" ",1);
  226.      sm("The file that is printed when 'j' is entered is 'joinconfXX.txt' for",1);
  227.      sm("non-ANSI graphics and 'joinconf.txt.gr' for ANSI graphics (XX is an optional",1);
  228.      sm("security code), both are located in 'BBS:NodeX'.  In this text file you",1);
  229.      sm("do not have to list a conf. This way you can have conferences that are",1);
  230.      sm("totally private that only select people know about.  For example you could",1);
  231.      sm("have a conference for friends that is not listed.  Regular users would not",1);
  232.      sm("know about this conference.",1);
  233.      match = TRUE;
  234.      }
  235.  
  236.    if(!strcmp("M",strupr(buff)))
  237.      {
  238.      sm("-*- (M) ANSI graphics on/off -*-",1);
  239.      sm(" ",1);
  240.      sm("This will toggle the ANSI color on and off. ANSI will give you",1);
  241.      sm("color menus if the sysop has configured them, it may also slow you down",1);
  242.      sm("a little due to the additional color codes being sent.",1);
  243.      match = TRUE;
  244.      }
  245.  
  246.    if(!strcmp("N",strupr(buff)))
  247.      {
  248.      sm("-*- (N)ew files or list files since a date -*-",1);
  249.      sm(" ",1);
  250.      sm("This New files command will list all new files since a certain date.  When",1);
  251.      sm("you enter 'n' at the main menu you will be asked to enter a date.  You can",1);
  252.      sm("just press return here for a listing since the default date, which is the",1);
  253.      sm("last time you called.  You will then be asked which directories you want to",1);
  254.      sm("list.  Alternately, you can enter a number from 1 to the highest number",1);
  255.      sm("directory, or an 'a' for all, or even a 'u' for the upload directory.",1);
  256.      sm(" ",1);
  257.      sm("From the main menu you can enter 'n date dir'.  For example you if you",1);
  258.      sm("entered 'n 01-01-89 u' you would be shown all the files in the upload",1);
  259.      sm("directory since 01-01-89 (January 1, 1989).  There is one other format for",1);
  260.      sm("this command, 'n s dir', which will list files since the last time you",1);
  261.      sm("called in the directory you specify.  For example 'n s u' will list all the",1);
  262.      sm("files in upload directory since the last time you called.",1);
  263.      sm(" ",1);
  264.      sm(example,1);
  265.      sm(" ",1);
  266.      sm("N           <- prompt for SINCE: MM-DD-YY",1);
  267.      sm("N S A       <- List all new files, in all directories since last call",1);
  268.      sm("N S U       <- List all new uploads in the last directory since last call",1);
  269.      match = TRUE;
  270.      }
  271.  
  272.    if(!strcmp("OPEN",strupr(buff)))
  273.      {
  274.      sm("-*- (OPEN) door menu -*-",1);
  275.      sm(" ",1);
  276.      sm("If the BBS has doors, and a menu exists this command 'OPEN' will",1);
  277.      sm("let you view the menu of commands to type to run doors.",1);
  278.      sm(" ",1);
  279.      sm(sysop,1);
  280.      sm(" ",1);
  281.      sm("You must have BBS:Commands with the open door to view the",1);
  282.      sm("bbs:commands/CustomCommands.txt file",1);
  283.      match = TRUE;
  284.      }
  285.  
  286.    if(!strcmp("O",strupr(buff)))
  287.      {
  288.      sm("-*- (O)perator page -*-",1);
  289.      sm(" ",1);
  290.      sm("Beeps every second for 30 seconds and flashes the sysops screen",1);
  291.      sm("to alert him that you want to chat (if he's available). Once you've",1);
  292.      sm("started the request you can abort at any time by pressing CTRL-C",1);
  293.      sm(" ",1);
  294.      sm(sysop,1);
  295.      sm(" ",1);
  296.      sm("This option CAN be turned off in the config file.",1);
  297.      sm("If the node is on a single bit plane screen the username may have an *",1);
  298.      sm("appended to it to signify that he's requested a chat. On a multiple",1);
  299.      sm("bit plane screen it'll change the username color to red.",1);
  300.      match = TRUE;
  301.      }
  302.  
  303.    if(!strcmp("R",strupr(buff)))
  304.      {
  305.      sm("-*- (R)ead mail (+ or -) -*-",1);
  306.      sm(" ",1);
  307.      sm("When you press 'r' at the main menu you will be show the next unread",1);
  308.      sm("message.  You then have the choice of doing the following:",1);
  309.      sm(" ",1);
  310.      sm("A>gain      - Read the current message again",1);
  311.      sm("D>elete     - Delete the current message (if TO or FROM you)",1);
  312.      sm("R>eply      - Reply to the current message",1);
  313.      sm("Q>uit       - Stop reading messages",1);
  314.      sm("<CR>=Next   - Read next available message",1);
  315.      sm(" ",1);
  316.      sm("NOTE: If you have read all of the messages in the area it will show you",1);
  317.      sm("(QUIT) as being the next message, you can reread ANY message by typing",1);
  318.      sm("its number (or even restart at beginning, ie... type 'R 1' )",1);
  319.      match = TRUE;
  320.      }
  321.  
  322.    if(!strcmp("S",strupr(buff)))
  323.      {
  324.      sm("-*- (S) print your stats -*-",1);
  325.      sm(" ",1);
  326.      sm("This will print the following stats about you:",1);
  327.      sm(" ",1);
  328.      sm("                  (123456789)",1);
  329.      sm("     Conf Access : XX_______    | X signifies access to that conference.",1);
  330.      sm("     CallerNumber: 1234         | Number of times BBS called by users.",1);
  331.      sm("     Last Date On: 06-11-88     | When the last day you called",1);
  332.      sm("     Security Lev: 10           | Your access level on the BBS",1);
  333.      sm("     # Iimes On  : 22           | Number of times BBS called by you.",1);
  334.      sm("     Ratio Dl/Ul : 3/1          | 3 Downloads for each Upload",1);
  335.      sm("     # Downloads : 12           | Downloaded 33 files",1);
  336.      sm("     # Uploaded  : 5            | Uploaded 5 files",1);
  337.      sm("     Bytes DL'd  : 234345       | DL'd 23K worth of files",1);
  338.      sm("     Bytes UL'D  : 564345       | UL'd 56K worth of files",1);
  339.      sm("     Bytes Avail : 3000000      | The maximum bytes You can DL each day.",1);
  340.      match = TRUE;
  341.      }
  342.  
  343.    if(!strcmp("T",strupr(buff)))
  344.      {
  345.      sm("-*- (T)ime display -*-",1);
  346.      sm(" ",1);
  347.      sm("NOTE: The time displayed is the time that the amiga clock is set to, if",1);
  348.      sm("it's not set by sysop the date this will most likely be wrong. To see",1);
  349.      sm("how much time is left on your current call - LOOK at the menu prompt.",1);
  350.      match = TRUE;
  351.      }
  352.  
  353.    if(!strcmp("UR",strupr(buff)))
  354.      {
  355.      sm("-*- (UR) upload resume a file(tm) -*-",1);
  356.      sm(" ",1);
  357.      sm("This will let you resume uploading an aborted upload.  If you do not have",1);
  358.      sm("any aborted uploads the BBS will tell you and go back to the main menu.  If",1);
  359.      sm("you do, the BBS will list the ones you have one at a time and ask if you",1);
  360.      sm("want to resume uploading it.  Just enter 'y' to the one you want to resume",1);
  361.      sm("uploading and on your end start transferring the file again.  Your terminal",1);
  362.      sm("program do no have to support anything special for resume uploading, it is",1);
  363.      sm("the BBS that does it.  When you resume and upload the BBS will tell your",1);
  364.      sm("terminal program that it already has part of the file and start sending a",1);
  365.      sm("that point.  This is the power of Zmodem!",1);
  366.      match = TRUE;
  367.      }
  368.  
  369.    if(!strcmp("U",strupr(buff)))
  370.      {
  371.      sm("-*- (U)pload a file -*-",1);
  372.      sm(" ",1);
  373.      sm("Once 'u' is entered the BBS sends a Zmodem header and waits for you to",1);
  374.      sm("start the transfer.  You can batch upload as many files you like.  If you",1);
  375.      sm("try to upload a file that already exists, the BBS will skip that file and",1);
  376.      sm("go to the next file or if it is the last file it will quit the upload.",1);
  377.      sm("Once the transfer is complete the BBS will check to make sure the filename",1);
  378.      sm("is not longer than 12 characters, if it is, you will be asked to enter a",1);
  379.      sm("new filename.  Next you will be asked to enter a description for the file.",1);
  380.      sm("This description can be up to nine (9) lines long.  When the description",1);
  381.      sm("is done entering a return on a line by itself will end.  If is was a batch",1);
  382.      sm("upload you will be ask to enter the description for the rest of the files..",1);
  383.      sm(" ",1);
  384.      sm("You are also able to enter the filename and description BEFORE the transfer",1);
  385.      sm("so that you can do a 'goodbye after transfer'. This is so you can upload a",1);
  386.      sm("lot of files and not have to be around after the transfer to enter the",1);
  387.      sm("descriptions.",1);
  388.      match = TRUE;
  389.      }
  390.  
  391.    if(!strcmp("V",strupr(buff)))
  392.      {
  393.      sm("-*- (V)iew a text file -*-",1);
  394.      sm(" ",1);
  395.      sm("This will let you view (read) a text file that is the file listings. When",1);
  396.      sm("you press 'v' you will be asked the filename you want to view.  Enter the",1);
  397.      sm("filename and the BBS will display the file.  From the main menu you can",1);
  398.      sm("also enter 'v filename' where filename is the file you want to view.",1);
  399.      match = TRUE;
  400.      }
  401.  
  402.    if(!strcmp("W",strupr(buff)))
  403.      {
  404.      sm("-*- (W)rite your stats -*-",1);
  405.      sm(" ",1);
  406.      sm("This allows the user to change their name, location, phone number,",1);
  407.      sm("password, and the number of lines to display on your terminal.",1);
  408.      sm(" ",1);
  409.      sm(sysop,1);
  410.      sm(" ",1);
  411.      sm("You can set the min access level for the user to have this ability",1);
  412.      sm("in the config program.",1);
  413.      match = TRUE;
  414.      }
  415.  
  416.    if(!strcmp("X",strupr(buff)))
  417.      {
  418.      sm("-*- (X)pert mode toggle (menus on/off) -*-",1);
  419.      sm(" ",1);
  420.      sm("If you have expert on you will not see the menu at the prompt unless you",1);
  421.      sm("enter '?'.  If you have expert off you will be shown the menu every time",1);
  422.      sm("the menu prompt is displayed.",1);
  423.      match = TRUE;
  424.      }
  425.  
  426.    if(!strcmp("ZOOM",strupr(buff)))
  427.      {
  428.      sm("-*- (ZOOM) all messages/mail -*-",1);
  429.      sm(" ",1);
  430.      sm("This option will gather all unread messages into a text file, then flag",1);
  431.      sm("this file for a free (D)ownload. Note - this option may not be available",1);
  432.      sm("on some boards.",1);
  433.      sm(" ",1);
  434.      sm(sysop,1);
  435.      sm(" ",1);
  436.      sm("You must have a directory called BBS:ZOOM. Also, make sure to add this",1);
  437.      sm("dir to your 'paths' file for each conference you allow downloading from.",1);
  438.      match = TRUE;
  439.      }
  440.  
  441.    if(!strcmp("Z",strupr(buff)))
  442.      {
  443.      sm("-*- (Z)ippy file search -*-",1);
  444.      sm(" ",1);
  445.      sm("Zippy file search searches for a specific text string. When you enter 'z'",1);
  446.      sm("you will be asked for the string you want to search for, and then what",1);
  447.      sm("directories you want to search in.",1);
  448.      sm(" ",1);
  449.      sm("You can enter 'z search_string directory' at the main menu prompt.  The",1);
  450.      sm("following line will display all files that have 'game' in the filename or",1);
  451.      sm("the disruption and will search all directories:  z game a",1);
  452.      sm(" ",1);
  453.      sm("IMPORTANT: * is NOT a wildcard!!! type the pattern BY ITSELF without a * !",1);
  454.      match = TRUE;
  455.      }
  456.  
  457.    if(*buff!=0)
  458.      {
  459.      if(match==FALSE)
  460.        {
  461.        sm("Sorry - no help is available for that command...",1);
  462.        }
  463.      sm(" ",1);
  464.      prompt("Press <RETURN> to continue with more help...",buff,1);
  465.      goto LOOP;
  466.      }
  467.  
  468.    ShutDown();
  469.    end();
  470.   }
  471.  
  472. void end(void)
  473. {
  474.    exit(0);
  475. }
  476.  
  477. void LastCommand(void)
  478. {
  479.   sm("",1);
  480.   sm("",1);
  481. }